package cn.biplam.common.interfaces;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

import cn.biplam.common.bean.sqlengine.Sql;
import cn.biplam.common.client.DbResource;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.sqlresult.SqlResult;

/**
 * 数据库服务接口类
 * @author WangSong 2009-8-7上午09:55:10
 * @version 1.0
 */
public interface DatabaseServer extends Remote,RmiServer{

	/**
	 * 数据库查询
	 * @param mSql  Sql工具类 
	 * @param mDbResource  数据源
	 * @param iQueryModel  分页方式
	 * @param sUserID  用户id
	 * @param sPageID  页面id
	 * @return  SqlResult
	 * @throws RemoteException
	 * @throws ErrorMessage
	 */
	public SqlResult executeSelect(Sql mSql,DbResource mDbResource,int iQueryModel,String sUserID,String sPageID) 
	                        throws RemoteException,ErrorMessage;
	/**
	 * 数据库查询(限制记录集返回条数)
	 * @param mSql  Sql工具类 
	 * @param mDbResource  数据源
	 * @param iQueryModel  分页方式
	 * @param sUserID  用户id
	 * @param sPageID  页面id
	 * @param resultSize 返回的记录条数
	 * @return SqlResult
	 * @throws RemoteException
	 * @throws ErrorMessage
	 */
	public SqlResult executeSelect(Sql mSql,DbResource mDbResource,int iQueryModel,String sUserID,String sPageID,int resultSize) 
	                        throws RemoteException,ErrorMessage;
	
	/**
	 * 数据库查询(分页)
	 * @param mSql  Sql工具类 
	 * @param mDbResource  数据源
	 * @param iQueryModel  分页方式
	 * @param sUserID  用户id
	 * @param sPageID  页面id
	 * @param start  开始位置
	 * @param end    结束位置
	 * @return SqlResult
	 * @throws RemoteException
	 * @throws ErrorMessage
	 */
	public SqlResult executeSelect(Sql mSql,DbResource mDbResource,int iQueryModel,String sUserID,String sPageID,int start,int end) 
	                        throws RemoteException,ErrorMessage;

	/**
	 * 执行 create  drop 等不能rollback的 sql的方法
	 * @param sql
	 * @return boolean
	 */
	public boolean executeDDL (Sql sql,DbResource dbResource) 
	                        throws RemoteException,ErrorMessage;

	/**
	 * 执行 delete  update insert等 可以rollback的 sql的方法
	 * @param sql
	 * @return boolean
	 */
	public boolean executeDML (Sql sql,DbResource dbResource) 
							throws RemoteException,ErrorMessage;

	/**
	 * update batch
	 * @param sql[]
	 * @return boolean
	 */
	@SuppressWarnings("finally")
	public boolean executeDMLBatch(String[]sql,DbResource dbResource) 
							throws RemoteException,ErrorMessage;
	
	/**
	 * update batch
	 * @param sql List
	 * @return boolean
	 */
	@SuppressWarnings("finally")
	public boolean executeDMLBatch(List<String> sql,DbResource dbResource) 
							throws RemoteException,ErrorMessage;
}
